package vip.zhenzicheng.nettybasic.embedded;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageEncoder;

import java.util.List;

/**
 * 扩展 MessageToMessageEncoder 实现将一个消息编码为另一种格式
 *
 * @author zhenzicheng
 * @date 2022-06-13 11:48
 */
public class AbsIntegerEncoder extends MessageToMessageEncoder<ByteBuf> {

  @Override
  protected void encode(ChannelHandlerContext channelHandlerContext, ByteBuf byteBuf, List<Object> list) throws Exception {
    while (byteBuf.readableBytes() >= 4) { // 检查是否有足够的字节来编码，int为4字节
      // 从输入的 ByteBuf 中读取下一个整数，并计算其绝对值
      int value = Math.abs(byteBuf.readInt());
      list.add(value); // 写入
    }
  }
}
